#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    // 1.打开LCD文件
    int lcd_fd = open("/dev/fb0", O_RDWR);
    if (lcd_fd == -1)
    {
        perror("open lcd error");
    }

    int white = 0x00FFFFFF;
    int black = 0x00000000;
    int blue  = 0x00004BED;

    // 申请内存映射
    int *lcd_p = mmap(NULL, 800 * 480*4, PROT_READ | PROT_WRITE, MAP_SHARED, lcd_fd, 0);

    for (int y = 0; y < 480; y++)
    {
        for (int x = 0; x < 800; x++)
        {
            if((x - 400)* (x - 400) + (y - 240)* (y - 240) == 100*100)
            {
                if(x >= 300 && x <= 400)
                {
                     *(lcd_p + x + y * 800) = black;
                }
                else
                {
                    *(lcd_p + x + y * 800) = white;
                }
            }

            if((x - 400)* (x - 400) + (y - 190)* (y - 190) == 50*50)
            {
                 *(lcd_p + x + y * 800) = black;
            }

            if((x - 400)* (x - 400) + (y - 290)* (y - 290) == 50*50)
            {
                 *(lcd_p + x + y * 800) = white;
            }

            if((x - 400)* (x - 400) + (y - 190)* (y - 190) == 10*10)
            {
                 *(lcd_p + x + y * 800) = white;
            }

            if((x - 400)* (x - 400) + (y - 290)* (y - 290) == 10*10)
            {
                 *(lcd_p + x + y * 800) = black;
            }
        }
    }

    //释放内存映射
    munmap(lcd_p,800*480*4);

    //关闭文件
    close(lcd_fd);
    return 0;
}